package org.springblade.modules.admin.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.modules.admin.dto.UserTrajectorySearchDTO;
import org.springblade.modules.admin.entity.UserTrajectory;
import org.springblade.modules.admin.vo.UserTrajectoryCountVO;
import org.springblade.modules.admin.vo.UserTrajectoryQueryVO;
import org.springblade.modules.admin.vo.UserTrajectoryVO;
import org.springblade.modules.system.vo.DeptVO;

import java.util.List;
import java.util.Date;

/**
 * @author: Sharry
 * @createTime: 2023/4/26 15:38
 * @version: Version-1.0
 */
public interface UserTrajectoryMapper extends BaseMapper<UserTrajectory> {
  /**
   * 根据用户id 获取组列表
   *
   * @param userId 用户id
   * @return 组列表
   */
  List<DeptVO> getDeptListByUserId(Long userId);

  /**
   * 获取 组-人 下拉列表
   *
   * @param tenantId 当前租户
   * @return 组-人列表
   */
  List<UserTrajectoryQueryVO> getUserList(String tenantId);

  /**
   * 人员轨迹分页
   *
   * @param userTrajectorySearchDTO 查询条件
   * @param page                    分页条件
   * @return 分页列表
   */
  IPage<UserTrajectoryCountVO> getUserTrajectoryCount(UserTrajectorySearchDTO userTrajectorySearchDTO,
      IPage<UserTrajectoryCountVO> page);

  /**
   * 获取人员轨迹列表
   *
   * @param userTrajectorySearchDTO 查询条件
   * @return 分页列表
   */
  List<UserTrajectoryVO> getUserTrajectoryVOList(UserTrajectorySearchDTO userTrajectorySearchDTO);

  /**
   * 获取人员最新路径
   *
   * @return
   */
  List<UserTrajectory> getUserNewTrajectoryList();

  /**
   * 获取人员轨迹列表
   *
   * @param beginTime 开始时间
   * @param endTime   结束时间
   * @return 分页列表
   */
  List<UserTrajectoryVO> getUserLocationVOList(Date beginTime, Date endTime);

    List<UserTrajectoryVO> calculateUserDayCount(Date beginTime, Date endTime);
}
